package com.cskaoyan.javase.file._1basic;

/**
 * @description: 路径名的相关问题
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 1,什么是路径名,路径名有几种表示形式?
 * 路径名: 在操作系统中用于描述文件/文件夹存放位置的字符串
 * 它主要有两种表示形式:
 *      1,绝对路径,类比于全限定类名,用于唯一的确定一个文件/文件夹的路径字符串就是绝对路径
 *          以Win为例子: 带上盘符的路径就是绝对路径,它就可以唯一的确定一个文件
 *              比如C:\\1.tx E:\\1
 *          类Unix系统: Linux和它的衍生系统(CentOS,Ubuntu)，MacOS
 *              它们都有一个共同特点： 有根目录的概念，用"/"表示，没有盘符
 *              绝对路径就是带有根目录的路径
 *              比如 /wangdao/share/java/34th
 *
 *      2,相对路径,不能唯一确定一个文件/文件夹的路径字符串表示
 *          以Win为例子: 不带盘符的路径就是相对路径，比如1.txt
 *          类Unix系统： 不带根目录的路径就是相对路径，比如 34th
 *
 * 2，绝对路径唯一确定一个文件，很好理解，但是相对路径既然不能确定一个文件，那么它有什么作用呢？
 *      相对路径有“相对于”某个路径的概念，所以只需要知道它相对于哪个路径，就可以唯一的确定一个文件/文件夹
 *      比如对于相对路径 1.txt 如果它相对于C:\\，那么它的完整路径就是C:\\1.txt
 *      相对路径是a.txt，但是它相对于E:\idea_space\34th\java34th\14-file
 *      于是相对路径仍然可以唯一的确定一个文件
 *
 *      相对路径相对于谁是可以设置的，那么相对路径在使用起来就比绝对路径要更加简洁方便，并且更加的灵活
 *
 * 3，既然相对路径有相对于谁的概念，那么我在IDEA使用相对路径，这个相对路径相对于谁？
 *      System.getProperty("user.dir") 获取当前相对路径
 *      它是可以修改的，但是一般不建议修改
 *
 * 4，win的路径分隔符是"\"但是Linux下分隔符是"/"
 *  如果我们是在win上开发，Linux上运行，是否意味着需要频繁根据不同系统更换分隔符呢？
 *  现在Java已经成熟了，不需要使用这种方式了
 *  只需要选择以下一种就可以：
 *      1，\\
 *      2，/
 *      3,//
 *  但是唯独不能使用"\"因为它表示转义
 *
 */
public class Demo {
    public static void main(String[] args) {
        //获取当前相对路径
        System.out.println(System.getProperty("user.dir"));
    }
}
